javascript object

  • js 的对象

对象创建#

//定义对象 json对象
var obj = {
name: "dfx",
age: 18,
pay: function () {
console.log("挣钱");
},
};
console.log(obj);
// 定义2
var obj2 = new Object();
obj2.name = "dmy";
obj2.age = "16";
obj2.pay = function () {
console.log("花钱");
};
console.log(obj2);
// 省略key
var username = "dd";
var age = 20;
var obj3 = {
username,
age,
pay() {
console.log("加班");
},
};
console.log(obj3.age);
// 构造函数创建对象
function Person(name, age) {
this.name = name;
this.age = age;
}
var p1 = new Person("dfx", 29);
var p2 = new Person("dmy", 20);
console.log(p1, p2);
//class 关键字
class Obj {
constructor(age, name) {
this.age = age;
this.name = name;
}
}
遍历对象#
var obj = {
name: "dfx",
age: 18,
pay: function () {
console.log("挣钱");
},
};
for (key in obj) {
console.log(key, "--", obj[key]);
}
删除对象属性#
delete obj3.pay;
//无法访问到对象属性 TypeError: obj3.pay is not a function
console.log(obj3.pay());
}
对象 setter getter#
var p = {
_age: 18,
get age() {
return this._age;
},
set age(val) {
this._age = val;
},
};
p.age; // 18
p.age = 20; // 20
p.age; // 20
console.log(p.age);
对象原型#
function Employee(name, position) {
this.name = name;
this.position = position;
this.sigln = function () {
console.log("赚钱");
};
}
var emp1 = new Employee("dmy", "🚩");
var emp2 = new Employee("dfx", "lg");
console.log(emp1);
console.log(emp2);
Employee.prototype.age = 20;
console.log(emp1);
console.log(emp2.age);
console.log(emp1.__proto__ === Employee.prototype); //true
console.log(Object.getPrototypeOf(emp1)); //简单获取原型对象
修改对象原型#
function Manager() {}
Manager.prototype.dp = "技术部";
// emp1 为上面的对象
Object.setPrototypeOf(emp1, Manager.prototype);
console.log(emp1.dp);
对象 spread 和 rest 解构#
var post = {
id: 1,
title: "dmy dyy",
centent: "love",
};
var postClone = { ...post };
console.log(post === postClone);
//rest 解构
var { id, title, ...rest } = post;
console.log(id);
console.log(rest);
引用传递和值传递#
function byRefArr(arr) {
arr[0] = 5;
}
var arr2 = [1, 2, 3];
byRefArr(arr2);
console.log(arr2);
function byRefObj(obj) {
obj.id = 2;
}
var obj2 = { id: 10 };
byRefObj(obj2);
console.log(obj2);
function byRefVal(num) {
num = 2;
console.log(num); // 2
}
var num2 = 10;
byRefVal(num2);
console.log(num2); //10
call#
var obj = {
id: 1,
name: "dmy",
};
function printInfo() {
console.log("love " + this.name);
}
printInfo(); // this 指向window
printInfo.call(obj); // call this 指向 obj
setTimeout() setInterval()#
// setTimeout()
console.log("先执行");
setTimeout(() => {
console.log("延迟执行");
}, 1000);
console.log("后执行");
//setInterval()
let intval = setInterval(() => {
let date = new Date();
console.log(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`);
}, 1000);
setTimeout(() => {
clearInterval(intval);
}, 5000);